﻿using System;
using System.Data;
using System.Windows.Forms;
using FBWMS.Properties;
using System.Globalization;

namespace FBWMS
{
    public partial class F_COM_Calender : Form
    {
        ////////////////////////////////////////////////////////////////////////////
        //
        //初期処理
        //
        ////////////////////////////////////////////////////////////////////////////
        public F_COM_Calender()
        {
            try
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.F_COM_Calender, "F_COM_Calender");

                //画面初期処理
                InitializeComponent();

                if (!this.P_Create_ComboBox())
                {
                    return;
                }               

                //空白チェック
                if (G_CommonDefine.G_Target_Date.ToString() == "")
                {
                    G_CommonDefine.G_Target_Date = DateTime.Now.ToString(G_CommonDefine.G_DateFormat,DateTimeFormatInfo.InvariantInfo);
                }

             

                //選択日付の設定
                this.cal_Calender.SetDate(DateTime.ParseExact(G_CommonDefine.G_Target_Date.ToString(),G_CommonDefine.G_DateFormat,DateTimeFormatInfo.InvariantInfo));

                ////年コンボボックスの設定
                //this.cmb_Year.SelectedValue = DateTime.Parse(G_CommonDefine.G_Target_Date.ToString()).ToString("yyyy");

                ////月コンボボックスの設定
                //this.cmb_Month.SelectedValue = DateTime.Parse(G_CommonDefine.G_Target_Date.ToString()).ToString("MM");
                //年コンボボックスの設定
                this.cmb_Year.SelectedValue = DateTime.Parse(this.cal_Calender.SelectionStart.ToShortDateString()).ToString("yyyy");

                //月コンボボックスの設定
                this.cmb_Month.SelectedValue = DateTime.Parse(this.cal_Calender.SelectionStart.ToShortDateString()).ToString("MM");

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.FCOMCalender初期処理終了, "F_COM_Calender");
            }
            catch (Exception err)
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.FCOMCalender初期処理エラー + err.Message, "F_COM_Calender");
                //エラーメッセージ表示
                MessageBox.Show(Resources.FCOMCalender初期処理エラー + err.Message, Resources.エラー, MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }

        #region イベントハンドラ ***********************************************************

        ////////////////////////////////////////////////////////////////////////////
        //
        //カレンダー日付を選択した際の処理
        //
        ////////////////////////////////////////////////////////////////////////////
        private void cal_Calender_DateSelected(object sender, DateRangeEventArgs e)
        {
            try
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.Cal_Calender_DateSelected, "cal_Calender_DateSelected");

                //カレンダーの値を共通変数にセットする。
                //string str_Date = DateTime.Parse(this.cal_Calender.SelectionStart.Year.ToString() + "/" + this.cal_Calender.SelectionStart.Month.ToString() + "/" + this.cal_Calender.SelectionStart.Day.ToString()).ToString("yyyy'/'MM'/'dd").ToString();
                string str_Date = DateTime.Parse(this.cal_Calender.SelectionStart.Year.ToString() + "/" + this.cal_Calender.SelectionStart.Month.ToString() + "/" + this.cal_Calender.SelectionStart.Day.ToString()).ToString(G_CommonDefine.G_DateFormat,DateTimeFormatInfo.InvariantInfo);
                
                G_CommonDefine.G_Target_Date = str_Date;

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.CalCalenderDateSelected処理終了, "cal_Calender_DateSelected");

                //画面終了
                this.Close();
            }
            catch (Exception err)
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.CalCalenderDateSelected処理エラー + err.Message, "cal_Calender_DateSelected");

                //エラーメッセージ表示
                MessageBox.Show(Resources.CalCalenderDateSelected処理エラー + err.Message, Resources.エラー, MessageBoxButtons.OK, MessageBoxIcon.Error);

                //画面終了
                this.Close();
            }
        }

        ////////////////////////////////////////////////////////////////////////////
        //
        //年コンボボックスを変更した際の処理
        //
        ////////////////////////////////////////////////////////////////////////////
        private void cmb_Year_SelectionChangeCommitted(object sender, EventArgs e)
        {
            try
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.Cmb_Year_SelectionChangeCommitted, "cmb_Year_SelectionChangeCommitted");

                //Nullチェック
                if (G_CommonClassChk.G_Chk_Null(this.cmb_Year.SelectedValue.ToString()) == false)
                {
                    return;
                }

                if (G_CommonClassChk.G_Chk_Null(this.cmb_Month.SelectedValue.ToString()) == false)
                {
                    return;
                }

                string str_date = this.cmb_Year.SelectedValue.ToString() + "/" + this.cmb_Month.SelectedValue.ToString() + "/" + DateTime.Parse(G_CommonDefine.G_Target_Date.ToString()).ToString("dd");

                //選択日付の設定
                this.cal_Calender.SetDate(DateTime.Parse(str_date));

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.CmbYearSelectionChangeCommitted処理終了, "cmb_Year_SelectionChangeCommitted");
            }
            catch (Exception err)
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.CmbYearSelectionChangeCommitted処理エラー + err.Message, "cmb_Year_SelectionChangeCommitted");

                //エラーメッセージ表示
                MessageBox.Show(Resources.CmbYearSelectionChangeCommitted処理エラー + err.Message, Resources.エラー, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        ////////////////////////////////////////////////////////////////////////////
        //
        //月コンボボックスを変更した際の処理
        //
        ////////////////////////////////////////////////////////////////////////////
        private void cmb_Month_SelectionChangeCommitted(object sender, EventArgs e)
        {
            try
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.Cmb_Month_SelectionChangeCommitted, "cmb_Month_SelectionChangeCommitted");

                //Nullチェック
                if (G_CommonClassChk.G_Chk_Null(this.cmb_Year.SelectedValue.ToString()) == false)
                {
                    return;
                }

                if (G_CommonClassChk.G_Chk_Null(this.cmb_Month.SelectedValue.ToString()) == false)
                {
                    return;
                }

                string str_date = this.cmb_Year.SelectedValue.ToString() + "/" + this.cmb_Month.SelectedValue.ToString() + "/" + DateTime.Parse(G_CommonDefine.G_Target_Date.ToString()).ToString("dd");

                //選択日付の設定
                this.cal_Calender.SetDate(DateTime.Parse(str_date));

                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.CmbMonthSelectionChangeCommitted処理終了, "cmb_Month_SelectionChangeCommitted");
            }
            catch (Exception err)
            {
                //ログ書込み
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.CmbMonthSelectionChangeCommitted処理エラー + err.Message, "cmb_Month_SelectionChangeCommitted");

                //エラーメッセージ表示
                MessageBox.Show(Resources.CmbMonthSelectionChangeCommitted処理エラー + err.Message, Resources.エラー, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        #endregion *************************************************************************

        #region プライベート関数 ***********************************************************

        /// <summary>
        /// コンボボックス生成処理
        /// </summary>
        private bool P_Create_ComboBox()
        {
            //年コンボボックスの生成
            DataSet ds1 = new DataSet();
            ds1.Tables.Add();
            //列の追加
            ds1.Tables[0].Columns.Add();
            ds1.Tables[0].Columns.Add();
            //行の追加
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows.Add();
            ds1.Tables[0].Rows[0][0] = "2005";
            ds1.Tables[0].Rows[0][1] = "2005年";
            ds1.Tables[0].Rows[1][0] = "2006";
            ds1.Tables[0].Rows[1][1] = "2006年";
            ds1.Tables[0].Rows[2][0] = "2007";
            ds1.Tables[0].Rows[2][1] = "2007年";
            ds1.Tables[0].Rows[3][0] = "2008";
            ds1.Tables[0].Rows[3][1] = "2008年";
            ds1.Tables[0].Rows[4][0] = "2009";
            ds1.Tables[0].Rows[4][1] = "2009年";
            ds1.Tables[0].Rows[5][0] = "2010";
            ds1.Tables[0].Rows[5][1] = "2010年";
            ds1.Tables[0].Rows[6][0] = "2011";
            ds1.Tables[0].Rows[6][1] = "2011年";
            ds1.Tables[0].Rows[7][0] = "2012";
            ds1.Tables[0].Rows[7][1] = "2012年";
            ds1.Tables[0].Rows[8][0] = "2013";
            ds1.Tables[0].Rows[8][1] = "2013年";
            ds1.Tables[0].Rows[9][0] = "2014";
            ds1.Tables[0].Rows[9][1] = "2014年";
            ds1.Tables[0].Rows[10][0] = "2015";
            ds1.Tables[0].Rows[10][1] = "2015年";
            ds1.Tables[0].Rows[11][0] = "2016";
            ds1.Tables[0].Rows[11][1] = "2016年";

            if (!G_CommonClassControl.G_Control_SetData_ComboBox(cmb_Year, ds1, 1, 0))
            {
                MessageBox.Show(Resources.MakePrinterCombo);
                return false;
            }
            //データセットのクリア
            ds1.Clear();

            //月コンボボックスの生成
            DataSet ds2 = new DataSet();
            ds2.Tables.Add();
            //列の追加
            ds2.Tables[0].Columns.Add();
            ds2.Tables[0].Columns.Add();
            //行の追加
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows.Add();
            ds2.Tables[0].Rows[0][0] = "01";
            ds2.Tables[0].Rows[0][1] = "01月";
            ds2.Tables[0].Rows[1][0] = "02";
            ds2.Tables[0].Rows[1][1] = "02月";
            ds2.Tables[0].Rows[2][0] = "03";
            ds2.Tables[0].Rows[2][1] = "03月";
            ds2.Tables[0].Rows[3][0] = "04";
            ds2.Tables[0].Rows[3][1] = "04月";
            ds2.Tables[0].Rows[4][0] = "05";
            ds2.Tables[0].Rows[4][1] = "05月";
            ds2.Tables[0].Rows[5][0] = "06";
            ds2.Tables[0].Rows[5][1] = "06月";
            ds2.Tables[0].Rows[6][0] = "07";
            ds2.Tables[0].Rows[6][1] = "07月";
            ds2.Tables[0].Rows[7][0] = "08";
            ds2.Tables[0].Rows[7][1] = "08月";
            ds2.Tables[0].Rows[8][0] = "09";
            ds2.Tables[0].Rows[8][1] = "09月";
            ds2.Tables[0].Rows[9][0] = "10";
            ds2.Tables[0].Rows[9][1] = "10月";
            ds2.Tables[0].Rows[10][0] = "11";
            ds2.Tables[0].Rows[10][1] = "11月";
            ds2.Tables[0].Rows[11][0] = "12";
            ds2.Tables[0].Rows[11][1] = "12月";

            if (!G_CommonClassControl.G_Control_SetData_ComboBox(cmb_Month, ds2, 1, 0))
            {
                MessageBox.Show(Resources.MakePrinterCombo);
                return false;
            }
            //データセットのクリア
            ds2.Clear();

            return true;
        }

        #endregion *************************************************************************

        #region フォーム共通処理 ***********************************************************

        ////////////////////////////////////////////////////////////////////////////
        //フォームKeyDown時処理
        //(エンターを押した際に次のコントロールに移動する。)
        //(フォームの『KeyPreview』を『true』にすること)
        ////////////////////////////////////////////////////////////////////////////
        private void F_COM_Calender_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (!e.Control)
                {
                    this.SelectNextControl(this.ActiveControl, !e.Shift, true, true, true);
                }
            }
        }

        #endregion *************************************************************************

        private void btn_Today_Click(object sender, EventArgs e)
        {
            G_CommonDefine.G_Target_Date = DateTime.Now.ToString();

            //選択日付の設定
            this.cal_Calender.SetDate(DateTime.Parse(G_CommonDefine.G_Target_Date.ToString()));

            //年コンボボックスの設定
            this.cmb_Year.SelectedValue = DateTime.Parse(G_CommonDefine.G_Target_Date.ToString()).ToString("yyyy");

            //月コンボボックスの設定
            this.cmb_Month.SelectedValue = DateTime.Parse(G_CommonDefine.G_Target_Date.ToString()).ToString("MM");
        }
    }
}